package com.supermap.filetransfer.listeners;

import com.supermap.filetransfer.execute.Tasker;
import com.supermap.filetransfer.thread.DownloadThread;

import java.io.IOException;

import okhttp3.Call;

/**
 * @author Huang.MinJie
 * @desc 任务下载监听器
 * @date 2022/6/19 20:01
 */
public interface IDownloadListener {

    /**
     * 初始化完成
     * @param taks
     */
    void onInit(Tasker taks);

    /**
     * 下载启动
     * @param taks
     */
    void onStart(Tasker taks);

    /**
     * 停止下载
     * @param msec 停止毫秒数 0代表永久停止
     */
    boolean onStop(long msec);

    /**
     * 取消下载
     */
    boolean onCancel();

    /**
     * 继续下载
     * @return
     */
    boolean onContinue();

    /**
     * 下载失败
     * @param call
     * @param e
     * @param tasker
     */
    void onFail(Call call, Exception e,Tasker tasker);

    /**
     * 子任务下载失败
     * @param call
     * @param e
     * @param tasker
     */
    void onSubtaskFail(Call call, Exception e, DownloadThread tasker);


    /**
     * 子任务下载成功
     * @param tasker
     */
    void onSubtaskSuccess(DownloadThread tasker);

    void onComplete(Tasker tasker);

    void onRunning(Tasker tasker);

}
